package xyz.xmh.pattern.behavioral.templatepattern;

/**
 * @author Administrator
 * <p>
 * 游戏抽象类，它的模板方法定义为final
 */
public abstract class AbstractGameTemplate {

    /**
     * 初始化方法
     */
    public abstract void initialize();

    /**
     * 开始方法
     */
    public abstract void startPlay();

    /**
     * 结束方法
     */
    public abstract void endPlay();

    /**
     * 模板方法，定义final，禁止重写
     */
    public final void play() {
        initialize();
        startPlay();
        endPlay();
    }

}
